

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>Slice Objects &mdash; Python v2.7.8 documentation</title>
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../',
        VERSION:     '2.7.8',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <script type="text/javascript" src="../_static/sidebar.js"></script>
    <link rel="search" type="application/opensearchdescription+xml"
          title="Search within Python v2.7.8 documentation"
          href="../_static/opensearch.xml"/>
    <link rel="author" title="About these documents" href="../about.html" />
    <link rel="copyright" title="Copyright" href="../copyright.html" />
    <link rel="top" title="Python v2.7.8 documentation" href="../index.html" />
    <link rel="up" title="Concrete Objects Layer" href="concrete.html" />
    <link rel="next" title="Weak Reference Objects" href="weakref.html" />
    <link rel="prev" title="Descriptor Objects" href="descriptor.html" />
    <link rel="shortcut icon" type="image/png" href="../_static/py.png" />
    <script type="text/javascript" src="../_static/copybutton.js"></script>
    
 
    

  </head>
  <body>  
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="weakref.html" title="Weak Reference Objects"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="descriptor.html" title="Descriptor Objects"
             accesskey="P">previous</a> |</li>
        <li><img src="../_static/py.png" alt=""
                 style="vertical-align: middle; margin-top: -1px"/></li>
        <li><a href="http://www.python.org/">Python</a> &raquo;</li>
        <li>
          <a href="../index.html">Python v2.7.8 documentation</a> &raquo;
        </li>

          <li><a href="index.html" >Python/C API Reference Manual</a> &raquo;</li>
          <li><a href="concrete.html" accesskey="U">Concrete Objects Layer</a> &raquo;</li> 
      </ul>
    </div>    

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="slice-objects">
<span id="id1"></span><h1>Slice Objects<a class="headerlink" href="#slice-objects" title="Permalink to this headline">¶</a></h1>
<dl class="var">
<dt id="PySlice_Type">
<a class="reference internal" href="type.html#PyTypeObject" title="PyTypeObject">PyTypeObject</a> <tt class="descname">PySlice_Type</tt><a class="headerlink" href="#PySlice_Type" title="Permalink to this definition">¶</a></dt>
<dd><p id="index-0">The type object for slice objects.  This is the same as <tt class="docutils literal"><span class="pre">slice</span></tt> and
<tt class="docutils literal"><span class="pre">types.SliceType</span></tt>.</p>
</dd></dl>

<dl class="function">
<dt id="PySlice_Check">
int <tt class="descname">PySlice_Check</tt><big>(</big><a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a><em>&nbsp;*ob</em><big>)</big><a class="headerlink" href="#PySlice_Check" title="Permalink to this definition">¶</a></dt>
<dd><p>Return true if <em>ob</em> is a slice object; <em>ob</em> must not be <em>NULL</em>.</p>
</dd></dl>

<dl class="function">
<dt id="PySlice_New">
<a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a>* <tt class="descname">PySlice_New</tt><big>(</big><a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a><em>&nbsp;*start</em>, <a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a><em>&nbsp;*stop</em>, <a class="reference internal" href="structures.html#PyObject" title="PyObject">PyObject</a><em>&nbsp;*step</em><big>)</big><a class="headerlink" href="#PySlice_New" title="Permalink to this definition">¶</a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>Return a new slice object with the given values.  The <em>start</em>, <em>stop</em>, and
<em>step</em> parameters are used as the values of the slice object attributes of
the same names.  Any of the values may be <em>NULL</em>, in which case the
<tt class="xref docutils literal"><span class="pre">None</span></tt> will be used for the corresponding attribute.  Return <em>NULL</em> if
the new object could not be allocated.</p>
</dd></dl>

<dl class="function">
<dt id="PySlice_GetIndices">
int <tt class="descname">PySlice_GetIndices</tt><big>(</big>PySliceObject<em>&nbsp;*slice</em>, Py_ssize_t<em>&nbsp;length</em>, Py_ssize_t<em>&nbsp;*start</em>, Py_ssize_t<em>&nbsp;*stop</em>, Py_ssize_t<em>&nbsp;*step</em><big>)</big><a class="headerlink" href="#PySlice_GetIndices" title="Permalink to this definition">¶</a></dt>
<dd><p>Retrieve the start, stop and step indices from the slice object <em>slice</em>,
assuming a sequence of length <em>length</em>. Treats indices greater than
<em>length</em> as errors.</p>
<p>Returns 0 on success and -1 on error with no exception set (unless one of
the indices was not <a class="reference internal" href="../library/constants.html#None" title="None"><tt class="xref py py-const xref docutils literal"><span class="pre">None</span></tt></a> and failed to be converted to an integer,
in which case -1 is returned with an exception set).</p>
<p>You probably do not want to use this function.  If you want to use slice
objects in versions of Python prior to 2.3, you would probably do well to
incorporate the source of <a class="reference internal" href="#PySlice_GetIndicesEx" title="PySlice_GetIndicesEx"><tt class="xref c c-func docutils literal"><span class="pre">PySlice_GetIndicesEx()</span></tt></a>, suitably renamed,
in the source of your extension.</p>
<p class="versionchanged">
<span class="versionmodified">Changed in version 2.5: </span>This function used an <tt class="xref c c-type docutils literal"><span class="pre">int</span></tt> type for <em>length</em> and an
<tt class="xref c c-type docutils literal"><span class="pre">int</span> <span class="pre">*</span></tt> type for <em>start</em>, <em>stop</em>, and <em>step</em>. This might require
changes in your code for properly supporting 64-bit systems.</p>
</dd></dl>

<dl class="function">
<dt id="PySlice_GetIndicesEx">
int <tt class="descname">PySlice_GetIndicesEx</tt><big>(</big>PySliceObject<em>&nbsp;*slice</em>, Py_ssize_t<em>&nbsp;length</em>, Py_ssize_t<em>&nbsp;*start</em>, Py_ssize_t<em>&nbsp;*stop</em>, Py_ssize_t<em>&nbsp;*step</em>, Py_ssize_t<em>&nbsp;*slicelength</em><big>)</big><a class="headerlink" href="#PySlice_GetIndicesEx" title="Permalink to this definition">¶</a></dt>
<dd><p>Usable replacement for <a class="reference internal" href="#PySlice_GetIndices" title="PySlice_GetIndices"><tt class="xref c c-func docutils literal"><span class="pre">PySlice_GetIndices()</span></tt></a>.  Retrieve the start,
stop, and step indices from the slice object <em>slice</em> assuming a sequence of
length <em>length</em>, and store the length of the slice in <em>slicelength</em>.  Out
of bounds indices are clipped in a manner consistent with the handling of
normal slices.</p>
<p>Returns 0 on success and -1 on error with exception set.</p>
<p class="versionadded">
<span class="versionmodified">New in version 2.3.</span></p>
<p class="versionchanged">
<span class="versionmodified">Changed in version 2.5: </span>This function used an <tt class="xref c c-type docutils literal"><span class="pre">int</span></tt> type for <em>length</em> and an
<tt class="xref c c-type docutils literal"><span class="pre">int</span> <span class="pre">*</span></tt> type for <em>start</em>, <em>stop</em>, <em>step</em>, and <em>slicelength</em>. This
might require changes in your code for properly supporting 64-bit
systems.</p>
</dd></dl>

</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
  <h4>Previous topic</h4>
  <p class="topless"><a href="descriptor.html"
                        title="previous chapter">Descriptor Objects</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="weakref.html"
                        title="next chapter">Weak Reference Objects</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
  <li><a href="../bugs.html">Report a Bug</a></li>
  <li><a href="../_sources/c-api/slice.txt"
         rel="nofollow">Show Source</a></li>
</ul>

<div id="searchbox" style="display: none">
  <h3>Quick search</h3>
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" size="18" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Enter search terms or a module, class or function name.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>  
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="weakref.html" title="Weak Reference Objects"
             >next</a> |</li>
        <li class="right" >
          <a href="descriptor.html" title="Descriptor Objects"
             >previous</a> |</li>
        <li><img src="../_static/py.png" alt=""
                 style="vertical-align: middle; margin-top: -1px"/></li>
        <li><a href="http://www.python.org/">Python</a> &raquo;</li>
        <li>
          <a href="../index.html">Python v2.7.8 documentation</a> &raquo;
        </li>

          <li><a href="index.html" >Python/C API Reference Manual</a> &raquo;</li>
          <li><a href="concrete.html" >Concrete Objects Layer</a> &raquo;</li> 
      </ul>
    </div>  
    <div class="footer">
    &copy; <a href="../copyright.html">Copyright</a> 1990-2014, Python Software Foundation.
    <br />
    The Python Software Foundation is a non-profit corporation.
    <a href="http://www.python.org/psf/donations/">Please donate.</a>
    <br />
    Last updated on Jun 29, 2014.
    <a href="../bugs.html">Found a bug</a>?
    <br />
    Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
    </div>

  </body>
</html>